home *** CD-ROM | disk | FTP | other *** search
- #ifndef SI_SMGDEF
- #define SI_SMGDEF
- /*** MODULE $SMGDEF ***/
-
- /* Include SMG status return code, for the convenience of the user only. */
- #pragma nostandard
- #include <smgmsg.h>
- #pragma standard
-
- /* Definitions for RTL Screen Management Facility */
- /* */
- /* Input terminator codes */
- /* */
- /* */
- /* Control characters */
- /* */
- #define SMG$K_TRM_NULL_CHAR 0 /* NUL */
- #define SMG$K_TRM_CTRLA 1 /* SOH */
- #define SMG$K_TRM_CTRLB 2 /* STX */
- #define SMG$K_TRM_CTRLC 3 /* ETX */
- #define SMG$K_TRM_CTRLD 4 /* EOT */
- #define SMG$K_TRM_CTRLE 5 /* ENQ */
- #define SMG$K_TRM_CTRLF 6 /* ACK */
- #define SMG$K_TRM_CTRLG 7 /* BEL */
- #define SMG$K_TRM_CTRLH 8 /* BS */
- #define SMG$K_TRM_CTRLI 9 /* HT */
- #define SMG$K_TRM_CTRLJ 10 /* LF */
- #define SMG$K_TRM_CTRLK 11 /* VT */
- #define SMG$K_TRM_CTRLL 12 /* FF */
- #define SMG$K_TRM_CTRLM 13 /* CR */
- #define SMG$K_TRM_CTRLN 14 /* SO */
- #define SMG$K_TRM_CTRLO 15 /* SI */
- #define SMG$K_TRM_CTRLP 16 /* DLE */
- #define SMG$K_TRM_CTRLQ 17 /* DC1 */
- #define SMG$K_TRM_CTRLR 18 /* DC2 */
- #define SMG$K_TRM_CTRLS 19 /* DC3 */
- #define SMG$K_TRM_CTRLT 20 /* DC4 */
- #define SMG$K_TRM_CTRLU 21 /* NAK */
- #define SMG$K_TRM_CTRLV 22 /* SYN */
- #define SMG$K_TRM_CTRLW 23 /* ETB */
- #define SMG$K_TRM_CTRLX 24 /* CAN */
- #define SMG$K_TRM_CTRLY 25 /* EM */
- #define SMG$K_TRM_CTRLZ 26 /* SUB */
- #define SMG$K_TRM_ESCAPE 27 /* ESC */
- #define SMG$K_TRM_FS 28 /* FS */
- #define SMG$K_TRM_GS 29 /* GS */
- #define SMG$K_TRM_RS 30 /* RS */
- #define SMG$K_TRM_US 31 /* US */
- #define SMG$K_TRM_SPACE 32 /* SP */
- #define SMG$K_TRM_EXCLAMATION_POINT 33 /* ! */
- #define SMG$K_TRM_DOUBLE_QUOTE 34 /* " */
- #define SMG$K_TRM_NUMBER_SIGN 35 /* # */
- #define SMG$K_TRM_DOLLAR_SIGN 36 /* $ */
- #define SMG$K_TRM_PERCENT_SIGN 37 /* % */
- #define SMG$K_TRM_AMPERSAND 38 /* & */
- #define SMG$K_TRM_QUOTE 39 /* ' */
- #define SMG$K_TRM_LEFT_PAREN 40 /* ( */
- #define SMG$K_TRM_RIGHT_PAREN 41 /* ) */
- #define SMG$K_TRM_ASTERISK 42 /* * */
- #define SMG$K_TRM_PLUS_SIGN 43 /* + */
- #define SMG$K_TRM_COMMA_CHAR 44 /* , */
- #define SMG$K_TRM_DASH 45 /* - */
- #define SMG$K_TRM_DOT 46 /* . */
- #define SMG$K_TRM_SLASH 47 /* / */
- #define SMG$K_TRM_ZERO 48 /* 0 */
- #define SMG$K_TRM_ONE 49 /* 1 */
- #define SMG$K_TRM_TWO 50 /* 2 */
- #define SMG$K_TRM_THREE 51 /* 3 */
- #define SMG$K_TRM_FOUR 52 /* 4 */
- #define SMG$K_TRM_FIVE 53 /* 5 */
- #define SMG$K_TRM_SIX 54 /* 6 */
- #define SMG$K_TRM_SEVEN 55 /* 7 */
- #define SMG$K_TRM_EIGHT 56 /* 8 */
- #define SMG$K_TRM_NINE 57 /* 9 */
- #define SMG$K_TRM_COLON 58 /* : */
- #define SMG$K_TRM_SEMICOLON 59 /* ; */
- #define SMG$K_TRM_LESS_THAN 60 /* < */
- #define SMG$K_TRM_EQUAL 61 /* = */
- #define SMG$K_TRM_GREATER_THAN 62 /* > */
- #define SMG$K_TRM_QUESTION_MARK 63 /* ? */
- #define SMG$K_TRM_AT_SIGN 64 /* @ */
- #define SMG$K_TRM_UPPERCASE_A 65 /* A */
- #define SMG$K_TRM_UPPERCASE_B 66 /* B */
- #define SMG$K_TRM_UPPERCASE_C 67 /* C */
- #define SMG$K_TRM_UPPERCASE_D 68 /* D */
- #define SMG$K_TRM_UPPERCASE_E 69 /* E */
- #define SMG$K_TRM_UPPERCASE_F 70 /* F */
- #define SMG$K_TRM_UPPERCASE_G 71 /* G */
- #define SMG$K_TRM_UPPERCASE_H 72 /* H */
- #define SMG$K_TRM_UPPERCASE_I 73 /* I */
- #define SMG$K_TRM_UPPERCASE_J 74 /* J */
- #define SMG$K_TRM_UPPERCASE_K 75 /* K */
- #define SMG$K_TRM_UPPERCASE_L 76 /* L */
- #define SMG$K_TRM_UPPERCASE_M 77 /* M */
- #define SMG$K_TRM_UPPERCASE_N 78 /* N */
- #define SMG$K_TRM_UPPERCASE_O 79 /* O */
- #define SMG$K_TRM_UPPERCASE_P 80 /* P */
- #define SMG$K_TRM_UPPERCASE_Q 81 /* Q */
- #define SMG$K_TRM_UPPERCASE_R 82 /* R */
- #define SMG$K_TRM_UPPERCASE_S 83 /* S */
- #define SMG$K_TRM_UPPERCASE_T 84 /* T */
- #define SMG$K_TRM_UPPERCASE_U 85 /* U */
- #define SMG$K_TRM_UPPERCASE_V 86 /* V */
- #define SMG$K_TRM_UPPERCASE_W 87 /* W */
- #define SMG$K_TRM_UPPERCASE_X 88 /* X */
- #define SMG$K_TRM_UPPERCASE_Y 89 /* Y */
- #define SMG$K_TRM_UPPERCASE_Z 90 /* Z */
- #define SMG$K_TRM_LEFT_BRACKET 91 /* [ */
- #define SMG$K_TRM_BACKSLASH 92 /* \ */
- #define SMG$K_TRM_RIGHT_BRACKET 93 /* ] */
- #define SMG$K_TRM_CARET 94 /* ^ */
- #define SMG$K_TRM_UNDERLINE 95 /* _ */
- #define SMG$K_TRM_GRAVE_ACCENT 96 /* ` */
- #define SMG$K_TRM_LOWERCASE_A 97 /* a */
- #define SMG$K_TRM_LOWERCASE_B 98 /* b */
- #define SMG$K_TRM_LOWERCASE_C 99 /* c */
- #define SMG$K_TRM_LOWERCASE_D 100 /* d */
- #define SMG$K_TRM_LOWERCASE_E 101 /* e */
- #define SMG$K_TRM_LOWERCASE_F 102 /* f */
- #define SMG$K_TRM_LOWERCASE_G 103 /* g */
- #define SMG$K_TRM_LOWERCASE_H 104 /* h */
- #define SMG$K_TRM_LOWERCASE_I 105 /* i */
- #define SMG$K_TRM_LOWERCASE_J 106 /* j */
- #define SMG$K_TRM_LOWERCASE_K 107 /* k */
- #define SMG$K_TRM_LOWERCASE_L 108 /* l */
- #define SMG$K_TRM_LOWERCASE_M 109 /* m */
- #define SMG$K_TRM_LOWERCASE_N 110 /* n */
- #define SMG$K_TRM_LOWERCASE_O 111 /* o */
- #define SMG$K_TRM_LOWERCASE_P 112 /* p */
- #define SMG$K_TRM_LOWERCASE_Q 113 /* q */
- #define SMG$K_TRM_LOWERCASE_R 114 /* r */
- #define SMG$K_TRM_LOWERCASE_S 115 /* s */
- #define SMG$K_TRM_LOWERCASE_T 116 /* t */
- #define SMG$K_TRM_LOWERCASE_U 117 /* u */
- #define SMG$K_TRM_LOWERCASE_V 118 /* v */
- #define SMG$K_TRM_LOWERCASE_W 119 /* w */
- #define SMG$K_TRM_LOWERCASE_X 120 /* x */
- #define SMG$K_TRM_LOWERCASE_Y 121 /* y */
- #define SMG$K_TRM_LOWERCASE_Z 122 /* z */
- #define SMG$K_TRM_LEFT_BRACE 123 /* left curly brace */
- #define SMG$K_TRM_VERTICAL_LINE 124 /* | */
- #define SMG$K_TRM_RIGHT_BRACE 125 /* right curly brace */
- #define SMG$K_TRM_TILDE 126 /* ~ */
- #define SMG$K_TRM_DELETE 127 /* DEL */
- /* */
- /* Synonyms for control characters */
- /* */
- #define SMG$K_TRM_BS 8
- #define SMG$K_TRM_HT 9
- #define SMG$K_TRM_LF 10
- #define SMG$K_TRM_VT 11
- #define SMG$K_TRM_FF 12
- #define SMG$K_TRM_CR 13
- /* */
- /* Keypad keys */
- /* */
- #define SMG$K_TRM_PF1 256
- #define SMG$K_TRM_PF2 257
- #define SMG$K_TRM_PF3 258
- #define SMG$K_TRM_PF4 259
- #define SMG$K_TRM_KP0 260
- #define SMG$K_TRM_KP1 261
- #define SMG$K_TRM_KP2 262
- #define SMG$K_TRM_KP3 263
- #define SMG$K_TRM_KP4 264
- #define SMG$K_TRM_KP5 265
- #define SMG$K_TRM_KP6 266
- #define SMG$K_TRM_KP7 267
- #define SMG$K_TRM_KP8 268
- #define SMG$K_TRM_KP9 269
- #define SMG$K_TRM_ENTER 270
- #define SMG$K_TRM_MINUS 271
- #define SMG$K_TRM_COMMA 272
- #define SMG$K_TRM_PERIOD 273
- /* */
- /* Cursor positioning keys */
- /* */
- #define SMG$K_TRM_UP 274
- #define SMG$K_TRM_DOWN 275
- #define SMG$K_TRM_LEFT 276
- #define SMG$K_TRM_RIGHT 277
- /* */
- /* Function keys */
- /* */
- #define SMG$K_TRM_F1 281
- #define SMG$K_TRM_F2 282
- #define SMG$K_TRM_F3 283
- #define SMG$K_TRM_F4 284
- #define SMG$K_TRM_F5 285
- #define SMG$K_TRM_F6 286
- #define SMG$K_TRM_F7 287
- #define SMG$K_TRM_F8 288
- #define SMG$K_TRM_F9 289
- #define SMG$K_TRM_F10 290
- #define SMG$K_TRM_F11 291
- #define SMG$K_TRM_F12 292
- #define SMG$K_TRM_F13 293
- #define SMG$K_TRM_F14 294
- #define SMG$K_TRM_F15 295
- #define SMG$K_TRM_F16 296
- #define SMG$K_TRM_F17 297
- #define SMG$K_TRM_F18 298
- #define SMG$K_TRM_F19 299
- #define SMG$K_TRM_F20 300
- /* */
- /* Synonyms for function keys */
- /* */
- #define SMG$K_TRM_HELP 295
- #define SMG$K_TRM_DO 296
- /* */
- /* Editing keys */
- /* */
- #define SMG$K_TRM_E1 311 /* FIND */
- #define SMG$K_TRM_E2 312 /* INSERT_HERE */
- #define SMG$K_TRM_E3 313 /* REMOVE */
- #define SMG$K_TRM_E4 314 /* SELECT */
- #define SMG$K_TRM_E5 315 /* PREV_SCREEN */
- #define SMG$K_TRM_E6 316 /* NEXT_SCREEN */
- /* */
- /* Synonyms for editing keys */
- /* */
- #define SMG$K_TRM_FIND 311 /* E1 */
- #define SMG$K_TRM_INSERT_HERE 312 /* E2 */
- #define SMG$K_TRM_REMOVE 313 /* E3 */
- #define SMG$K_TRM_SELECT 314 /* E4 */
- #define SMG$K_TRM_PREV_SCREEN 315 /* E5 */
- #define SMG$K_TRM_NEXT_SCREEN 316 /* E6 */
- /* */
- /* Locator keys */
- /* */
- #define SMG$K_TRM_FIRST_DOWN 321 /* Left button down */
- #define SMG$K_TRM_SECOND_DOWN 322 /* Middle button down */
- #define SMG$K_TRM_THIRD_DOWN 323 /* Right button down */
- #define SMG$K_TRM_FOURTH_DOWN 324 /* Fourth button down */
- #define SMG$K_TRM_FIRST_UP 325 /* Left button up */
- #define SMG$K_TRM_SECOND_UP 326 /* Middle button up */
- #define SMG$K_TRM_THIRD_UP 327 /* Right button up */
- #define SMG$K_TRM_FOURTH_UP 328 /* Fourth button up */
- /* */
- /* Conditions */
- /* */
- #define SMG$K_TRM_CANCELLED 508 /* I/O cancelled by SMG$CANCEL_INPUT */
- #define SMG$K_TRM_TIMEOUT 509 /* Timeout period expired */
- #define SMG$K_TRM_BUFFER_FULL 510 /* Buffer is full */
- #define SMG$K_TRM_UNKNOWN 511 /* Unknown terminator */
- /* */
- /* Screen Management request types - These constants are used internally */
- /* by SMG$ and should not be used by users. */
- /* */
- #define SMG$C_CHANGE_RENDITION 10
- #define SMG$C_DELETE_CHARS 11
- #define SMG$C_ERASE_DISPLAY 12
- #define SMG$C_ERASE_LINE 13
- #define SMG$C_HOME_CURSOR 14
- #define SMG$C_INSERT_CHARS 15
- #define SMG$C_INSERT_LINE 16
- #define SMG$C_PUT_CHARS 17
- #define SMG$C_PUT_LINE 18
- #define SMG$C_PUT_DISPLAY_ENCODED 19
- #define SMG$C_RETURN_CURSOR_POS 20
- #define SMG$C_PUT_WITH_SCROLL 21
- #define SMG$C_SET_CURSOR_ABS 22
- #define SMG$C_SET_CURSOR_REL 23
- #define SMG$C_DELETE_LINE 24
- #define SMG$C_ERASE_CHARS 25
- #define SMG$C_SCROLL_DISPLAY_AREA 26
- #define SMG$C_CHANGE_VIRTUAL_DISPLAY 27
- #define SMG$C_LABEL_BORDER 28
- #define SMG$C_END_DISPLAY_UPDATE 29
- #define SMG$C_MOVE_TEXT 30
- /* */
- /* Character Set Codes */
- /* */
- #define SMG$C_UNITED_KINGDOM 0 /* Unused */
- #define SMG$C_ASCII 1 /* ASCII char set */
- #define SMG$C_SPEC_GRAPHICS 2 /* Line drawing set */
- #define SMG$C_ALT_CHAR 3 /* Unused */
- #define SMG$C_ALT_GRAPHICS 4 /* Unused */
- /* */
- /* The following constants define corner cursor positions used in */
- /* SMG$HOME_CURSOR. */
- /* */
- #define SMG$C_UPPER_LEFT 0 /* Home cursor to upper left corner */
- #define SMG$C_LOWER_LEFT 1 /* Home cursor to lower left corner */
- #define SMG$C_UPPER_RIGHT 2 /* Home cursor to upper right corner */
- #define SMG$C_LOWER_RIGHT 3 /* Home cursor to lower right corner */
- /* */
- /* The following constants define label positions used in */
- /* SMG$LABEL_BORDER. */
- /* */
- #define SMG$K_TOP 0 /* Place label on top border */
- #define SMG$K_BOTTOM 1 /* Place label on bottom border */
- #define SMG$K_LEFT 2 /* Place label on left border */
- #define SMG$K_RIGHT 3 /* Place label on right border */
- /* */
- /* The following constants define menu types used in */
- /* SMG$CREATE_MENU. */
- /* */
- #define SMG$K_BLOCK 0 /* Matrix of menu items */
- #define SMG$K_VERTICAL 1 /* Vertical vector of menu items */
- #define SMG$K_HORIZONTAL 2 /* Horizontal vector of menu items */
- /* */
- /* Master color wheel for screen background colors. */
- /* Used with SMG$CHANGE_PBD_CHARACTERISTICS. */
- /* */
- #define SMG$C_COLOR_UNKNOWN 0 /* Unknown background */
- #define SMG$C_COLOR_WHITE 1 /* White background */
- #define SMG$C_COLOR_BLACK 2 /* Black background */
- #define SMG$C_COLOR_BLUE 3 /* Blue background */
- #define SMG$C_COLOR_CYAN 4 /* Cyan background */
- #define SMG$C_COLOR_GREEN 5 /* Green background */
- #define SMG$C_COLOR_MAGENTA 6 /* Magenta background */
- #define SMG$C_COLOR_RED 7 /* Red background */
- #define SMG$C_COLOR_YELLOW 8 /* Yellow background */
- #define SMG$C_COLOR_LIGHT 9 /* Light background */
- #define SMG$C_COLOR_DARK 10 /* Dark background */
- #define SMG$C_COLOR_USER1 11 /* User 1 background */
- #define SMG$C_COLOR_USER2 12 /* User 2 background */
- /* */
- /* The following constants describe the type of terminal */
- /* and are used with SMG$GET_PASTEBOARD_ATTRIBUTES. */
- /* */
- #define SMG$K_UNKNOWN 0 /* Unknown type */
- #define SMG$K_VT05 1 /* Unused */
- #define SMG$K_VT52 2 /* Unused */
- #define SMG$K_VT100 3 /* Unused */
- #define SMG$K_VTFOREIGN 4 /* Foreign terminal (ft1-8) */
- #define SMG$K_HARDCOPY 5 /* Hardcopy device */
- #define SMG$K_VTTERMTABLE 6 /* Video terminal */
- #define SMG$K_FIRST_PRIV_TYPE 191 /* Used internally by SMG$ */
- /* */
- /* Define bits, masks, and fields for the control modes. */
- /* */
- #define SMG$K_BUF_ENABLED 0 /* Enable Buffering */
- #define SMG$K_MINUPD 1 /* Enable minimal update */
- #define SMG$K_CLEAR_SCREEN 2 /* Clear screen on exit */
- #define SMG$K_NOTABS 3 /* Don't use physical tabs */
- #define SMG$K_PROTECT 4 /* Protect against ASTs */
- #define SMG$M_BUF_ENABLED 1
- #define SMG$M_MINUPD 2
- #define SMG$M_CLEAR_SCREEN 4
- #define SMG$M_NOTABS 8
- #define SMG$M_PROTECT 16
- #define SMG$m_spare15 -32
- struct SMGMODE_BITS {
- unsigned SMG$V_BUF_ENABLED : 1; /* Enable buffering */
- unsigned SMG$V_MINUPD : 1; /* Enable minimal update (default) */
- unsigned SMG$V_CLEAR_SCREEN : 1; /* Clear screen on exit */
- unsigned SMG$V_NOTABS : 1; /* Don't use physical tabs */
- unsigned SMG$V_PROTECT : 1; /* Protect against ASTs */
- unsigned SMG$v_spare15 : 27; /* extra bits */
- } ;
- /* */
- /* Key definition attributes */
- /* */
- #define SMG$M_KEY_NOECHO 1
- #define SMG$M_KEY_TERMINATE 2
- #define SMG$M_KEY_LOCK 4
- #define SMG$M_KEY_PROTECTED 8
- #define SMG$M_KEY_SETSTATE 16
- #define SMG$m_spare18 -32
- struct SMG$R_KEY_DEF_ATTR {
- unsigned SMG$V_KEY_NOECHO : 1; /* Don't echo strings */
- unsigned SMG$V_KEY_TERMINATE : 1; /* This key terminates read */
- unsigned SMG$V_KEY_LOCK : 1; /* Lock new state */
- unsigned SMG$V_KEY_PROTECTED : 1; /* Definition is protected */
- unsigned SMG$V_KEY_SETSTATE : 1; /* Definition sets a state (output only) */
- unsigned SMG$v_spare18 : 27; /* extra bits */
- } ;
- /* */
- /* Define bit masks and values for display renditions. */
- /* */
- #define SMG$M_BOLD 1
- #define SMG$M_REVERSE 2
- #define SMG$M_BLINK 4
- #define SMG$M_UNDERLINE 8
- #define SMG$M_INVISIBLE 16
- #define SMG$M_USER1 256
- #define SMG$M_USER2 512
- #define SMG$M_USER3 1024
- #define SMG$M_USER4 2048
- #define SMG$M_USER5 4096
- #define SMG$M_USER6 8192
- #define SMG$M_USER7 16384
- #define SMG$M_USER8 32768
- #define SMG$m_spare14 -65536
- struct SMGDEF_BITS {
- unsigned SMG$V_BOLD : 1; /* Bold rendition */
- unsigned SMG$V_REVERSE : 1; /* Reverse video rendition */
- unsigned SMG$V_BLINK : 1; /* Blink rendition */
- unsigned SMG$V_UNDERLINE : 1; /* Underline rendition */
- unsigned SMG$V_INVISIBLE : 1; /* Invisible rendition */
- unsigned SMG$v_fill1 : 3; /* internally used by SMG$ */
- unsigned SMG$V_USER1 : 1; /* User rendition 1 */
- unsigned SMG$V_USER2 : 1; /* User rendition 2 */
- unsigned SMG$V_USER3 : 1; /* User rendition 3 */
- unsigned SMG$V_USER4 : 1; /* User rendition 4 */
- unsigned SMG$V_USER5 : 1; /* User rendition 5 */
- unsigned SMG$V_USER6 : 1; /* User rendition 6 */
- unsigned SMG$V_USER7 : 1; /* User rendition 7 */
- unsigned SMG$V_USER8 : 1; /* User rendition 8 */
- unsigned SMG$v_spare14 : 16; /* extra bits */
- } ;
- #define SMG$M_NORMAL 0 /* no bits set */
- /* */
- /* The following masks define values to be used */
- /* to specify a display attribute. These may be added */
- /* together to specify multiple attributes. */
- /* */
- #define SMG$M_BORDER 1
- #define SMG$M_TRUNC_ICON 2
- #define SMG$M_DISPLAY_CONTROLS 4
- #define SMG$M_USER_DISPLAY 8
- #define SMG$M_BLOCK_BORDER 16
- #define SMG$m_spare12 -32
- struct DISPLAY_ATTRIBUTES {
- unsigned SMG$V_BORDER : 1; /* Display is bordered */
- unsigned SMG$V_TRUNC_ICON : 1; /* Truncation icon enabled */
- unsigned SMG$V_DISPLAY_CONTROLS : 1; /* Display carriage controls */
- unsigned SMG$V_USER_DISPLAY : 1; /* User display for DEBUG */
- unsigned SMG$V_BLOCK_BORDER : 1; /* Display is block bordered */
- unsigned SMG$v_spare12 : 27; /* extra bits */
- } ;
- /* */
- /* The following defines bits used with subprocess manipulation. */
- /* */
- #define SMG$M_DATA_FOLLOWS 1
- #define SMG$M_SEND_EOF 2
- #define SMG$m_spare11 -4
- struct SMG$R_SUBPROCESS_FLAGS {
- unsigned SMG$V_DATA_FOLLOWS : 1; /* The next call specifies data. */
- unsigned SMG$V_SEND_EOF : 1; /* Send an end-of-file to the subprocess */
- unsigned SMG$v_spare11 : 30; /* extra bits */
- } ;
- /* */
- /* The following defines bits used with the FLAGS parameter for */
- /* SMG$DELETE_PASTEBOARD. */
- /* */
- #define SMG$M_ERASE_PBD 1
- #define SMG$m_spare10 -2
- struct SMG$R_DELETE_PBD_FLAGS {
- unsigned SMG$V_ERASE_PBD : 1; /* Erase the pasteboard */
- unsigned SMG$v_spare10 : 31; /* extra bits */
- } ;
- /* */
- /* The following defines bits used with the FLAGS parameter for */
- /* SMG$CREATE_PASTEBOARD. */
- /* */
- #define SMG$M_KEEP_CONTENTS 1
- #define SMG$m_spare9 -2
- struct SMG$R_CREATE_PBD_FLAGS {
- unsigned SMG$V_KEEP_CONTENTS : 1; /* Don't erase the pasteboard */
- unsigned SMG$v_spare9 : 31; /* extra bits */
- } ;
- /* */
- /* The following defines bits used with the FLAGS parameter for */
- /* SMG$READ_xxxx. */
- /* */
- #define SMG$M_FUNC_KEYS 1
- #define SMG$M_NOKEEP 2
- #define SMG$M_NORECALL 4
- #define SMG$m_spare8 -8
- struct SMG$R_READ_FLAGS {
- unsigned SMG$V_FUNC_KEYS : 1; /* Disable line-editting. */
- unsigned SMG$V_NOKEEP : 1; /* Don't save input in recall buffer */
- unsigned SMG$V_NORECALL : 1; /* Disable input recall for this call */
- unsigned SMG$v_spare8 : 29; /* extra bits */
- } ;
- /* */
- /* The following defines bits used with the FLAGS parameter for */
- /* SMG$SET_CURSOR_MODE. */
- /* */
- #define SMG$M_CURSOR_OFF 1
- #define SMG$M_CURSOR_ON 2
- #define SMG$M_SCROLL_JUMP 4
- #define SMG$M_SCROLL_SMOOTH 8
- #define SMG$m_spare16 -16
- struct SMG$R_SET_CURSOR_FLAGS {
- unsigned SMG$V_CURSOR_OFF : 1; /* Turn the physical cursor off */
- unsigned SMG$V_CURSOR_ON : 1; /* Turn the physical cursor on */
- unsigned SMG$V_SCROLL_JUMP : 1; /* Set jump scroll */
- unsigned SMG$V_SCROLL_SMOOTH : 1; /* Set smooth scroll */
- unsigned SMG$v_spare16 : 28; /* extra bits */
- } ;
- /* */
- /* The following defines bits used with the FLAGS parameter for */
- /* SMG$GET_DISPLAY_ATTR. */
- /* */
- #define SMG$M_VIEWPORT 1
- #define SMG$M_SUBPROCESS 2
- #define SMG$M_MENU 4
- #define SMG$m_spare7 -8
- struct SMG$R_GET_DISPLAY_FLAGS {
- unsigned SMG$V_VIEWPORT : 1; /* Display contains a viewport */
- unsigned SMG$V_SUBPROCESS : 1; /* Display contains a subprocess */
- unsigned SMG$V_MENU : 1; /* Display contains a menu */
- unsigned SMG$v_spare7 : 29; /* extra bits */
- } ;
- /* */
- /* The following defines bits used with the FLAGS parameter for */
- /* SMG$PUT_CHARS. */
- /* */
- #define SMG$M_ERASE_LINE 1
- #define SMG$M_ERASE_TO_EOL 2
- #define SMG$m_spare6 -4
- struct SMG$R_PUT_CHARS_FLAGS {
- unsigned SMG$V_ERASE_LINE : 1; /* Erase the entire line */
- unsigned SMG$V_ERASE_TO_EOL : 1; /* Erase from cursor to end of line */
- unsigned SMG$v_spare6 : 30; /* extra bits */
- } ;
- /* */
- /* The following defines bits used with the FLAGS parameter for */
- /* SMG$MOVE_TEXT. */
- /* */
- #define SMG$M_TEXT_SAVE 1
- #define SMG$M_TEXT_ONLY 2
- #define SMG$m_spare17 -4
- struct SMG$R_MOVE_TEXT_FLAGS {
- unsigned SMG$V_TEXT_SAVE : 1; /* Don't erase text after moving it */
- unsigned SMG$V_TEXT_ONLY : 1; /* Don't move attributes */
- unsigned SMG$v_spare17 : 30; /* extra bits */
- } ;
- /* */
- /* The following defines bits used with the FLAGS parameter for */
- /* SMG$PUT_PASTEBOARD and SMG$SNAPSHOT. */
- /* */
- #define SMG$M_FORM_FEED 1
- #define SMG$m_spare5 -2
- struct SMG$R_SNAPSHOT_FLAGS {
- unsigned SMG$V_FORM_FEED : 1; /* Output form feed before first row */
- unsigned SMG$v_spare5 : 31; /* extra bits */
- } ;
- /* */
- /* The following defines bits used with the FLAGS parameter for */
- /* SMG$PUT_xxxx. */
- /* */
- #define SMG$M_WRAP_CHAR 1
- #define SMG$M_WRAP_WORD 2
- #define SMG$m_spare4 -4
- struct SMG$R_PUT_LINE_FLAGS {
- unsigned SMG$V_WRAP_CHAR : 1; /* Do character wrapping at end of line */
- unsigned SMG$V_WRAP_WORD : 1; /* Do word wrapping at end of line */
- unsigned SMG$v_spare4 : 30; /* extra bits */
- } ;
- /* */
- /* The following defines bits used with the FLAGS parameter for */
- /* SMG$SET_KEYPAD_MODE. */
- /* */
- #define SMG$M_KEYPAD_APPLICATION 1
- #define SMG$M_KEYPAD_NUMERIC 2
- #define SMG$m_spare3 -4
- struct SMG$R_KEYPAD_MODES {
- unsigned SMG$V_KEYPAD_APPLICATION : 1; /* Application keypad */
- unsigned SMG$V_KEYPAD_NUMERIC : 1; /* Numeric keypad */
- unsigned SMG$v_spare3 : 30; /* extra bits */
- } ;
- /* */
- /* The following defines bits used with the FLAGS parameter for */
- /* SMG$GET_PASTING_INFO. */
- /* */
- #define SMG$M_DISPLAY_PASTED 1
- #define SMG$m_spare19 -2
- struct SMG$R_PASTING_INFO_FLAGS {
- unsigned SMG$V_DISPLAY_PASTED : 1; /* Display is pasted */
- unsigned SMG$v_spare19 : 31; /* extra bits */
- } ;
- /* */
- /* The following defines bits used with menu manipulation. */
- /* */
- #define SMG$M_REMOVE_ITEM 1
- #define SMG$M_FIXED_FORMAT 2
- #define SMG$M_DOUBLE_SPACE 4
- #define SMG$M_RETURN_IMMED 8
- #define SMG$M_ERASE_MENU 16
- #define SMG$M_WIDE_MENU 32
- #define SMG$m_spare2 -64
- struct SMG$R_MENU_FLAGS {
- unsigned SMG$V_REMOVE_ITEM : 1; /* Only select item once */
- unsigned SMG$V_FIXED_FORMAT : 1; /* Use fixed size cols */
- unsigned SMG$V_DOUBLE_SPACE : 1; /* Double space menu rows */
- unsigned SMG$V_RETURN_IMMED : 1; /* Ret on non-arrow key */
- unsigned SMG$V_ERASE_MENU : 1; /* Erase menu when deleting */
- unsigned SMG$V_WIDE_MENU : 1; /* Wide menu items */
- unsigned SMG$v_spare2 : 26; /* extra bits */
- } ;
- /* */
- /* The following are used with SMG$PUT_LINE_xxxx, */
- /* SMG$SCROLL_DISPLAY_AREA, and SMG$DRAW_CHAR. */
- /* */
- #define SMG$M_UP 1
- #define SMG$M_DOWN 2
- #define SMG$M_RIGHT 4
- #define SMG$M_LEFT 8
- #define SMG$m_spare1 -16
- struct SCROLL_DIRS {
- unsigned SMG$V_UP : 1; /* Up */
- unsigned SMG$V_DOWN : 1; /* Down */
- unsigned SMG$V_RIGHT : 1; /* Right */
- unsigned SMG$V_LEFT : 1; /* Left */
- unsigned SMG$v_spare1 : 28; /* extra bits */
- } ;
- /* */
- /* Define data structures */
- /* */
- #define SMG$C_BAND_INFORMATION_TABLE 12 /* Length of table in bytes */
- /* */
- #define SMG$C_PASTEBOARD_INFO_BLOCK 32 /* Length of table in bytes */
- /* */
- #define SMG$C_KEYBOARD_INFO_BLOCK 20 /* Length of table in bytes */
- union SMGDEF {
- /* */
- /* When an out-of-band AST triggers, the user's AST routine */
- /* will get called. The first argument passed to his */
- /* routine is the address of a Band Information Table. */
- /* The offsets into this table are described below. */
- /* To make it easy to access from certain languages, */
- /* the table is arranged so that it is convenient to */
- /* reference it as a longword vector as well as a byte block. */
- /* */
- struct {
- unsigned long int SMG$L_PASTEBOARD_ID; /* Pasteboard ID */
- unsigned long int SMG$L_ARG; /* User's AST argument */
- union {
- unsigned char SMG$B_CHARACTER; /* The character typed */
- unsigned long int SMG$L_CHARACTER; /* The character and 3 spaces */
- } SMG$R_CHARACTER_OVERLAY;
- } SMG$R_BAND_INFORMATION_TABLE;
- /* When SMG$GET_PASTEBOARD_ATTRIBUTES is called, */
- /* it returns data in a pasteboard information block. */
- /* The following structure is used to reference fields */
- /* in this block. */
- /* Items marked with a plus (+) will be 0 unless the */
- /* device is a terminal (DEVCLASS=DC$_TERM). */
- /* */
- struct {
- unsigned long int SMG$L_DEVCHAR; /* Device characteristics */
- unsigned long int SMG$L_DEVDEPEND; /* Specific characteristics (1) */
- unsigned long int SMG$L_DEVDEPEND2; /* Specific characteristics (2) */
- unsigned char SMG$B_DEVCLASS; /* Device class (e.g. DC$_TERM) */
- unsigned char SMG$B_SMG_DEVTYPE; /* Internal SMG device type */
- unsigned char SMG$B_PHY_DEVTYPE; /* Physical device type (e.g. DT$_VT100) */
- unsigned char SMG$B_ROWS; /* Number of rows on device */
- unsigned short int SMG$W_WIDTH; /* Terminal width */
- unsigned char SMG$B_COLOR; /* PBD background color */
- unsigned char SMG$B_PARITY; /* Parity attributes (+) */
- unsigned short int SMG$W_SPEED; /* Terminal Speed (+) */
- unsigned short int SMG$W_FILL; /* Fill characteristics (+) */
- unsigned short int SMG$W_CURSOR_ROW; /* Row where physical cursor is */
- /* (1-origin) */
- unsigned short int SMG$W_CURSOR_COL; /* Col where physical cursor is */
- /* (1-origin) */
- unsigned long int SMG$L_CURSOR_DID; /* Display id of topmost */
- /* display that cursor is in. */
- /* 0 if cursor is not in a */
- /* virtual display */
- } SMG$R_PASTEBOARD_INFO_BLOCK;
- /* When SMG$GET_KEYBOARD_ATTRIBUTES is called, */
- /* it returns data in a keyboard information block. */
- /* The following structure is used to reference fields */
- /* in this block. */
- /* Items marked with a plus (+) will be 0 unless the */
- /* device is a terminal (DEVCLASS=DC$_TERM). */
- /* */
- struct {
- unsigned long int SMG$l_fill1; /* Device characteristics */
- unsigned long int SMG$l_fill2; /* Specific characteristics (1) */
- unsigned long int SMG$l_fill3; /* Specific characteristics (2) */
- unsigned char SMG$b_fill4; /* Device class (e.g. DC$_TERM) */
- unsigned char SMG$B_RECALL_SIZE; /* Size of recall buffer (+) */
- unsigned char SMG$b_fill5; /* Physical device type (e.g. DT$_VT100) */
- unsigned char SMG$B_TYPEAHEAD_CHAR; /* First char in typeahead buffer (+) */
- unsigned short int SMG$w_fill6; /* Terminal width */
- unsigned short int SMG$W_TYPEAHEAD_COUNT; /* Number of chars in typeahead buffer (+) */
- } SMG$R_KEYBOARD_INFO_BLOCK;
- } ;
- /* */
- /* Define the out-of-band information table used when an out-of-band */
- /* AST routine is called as it's own record. */
- /* */
- struct SMG$R_OUT_OF_BAND_TABLE {
- unsigned long int SMG$L_PBD_ID; /* Pasteboard ID */
- unsigned long int SMG$L_USER_ARG; /* User's AST argument */
- union {
- unsigned char SMG$B_CHAR; /* The character typed */
- unsigned long int SMG$L_CHAR; /* The character and 3 spaces */
- } SMG$R_CHAR_OVERLAY;
- } ;
- #define SMG$C_OUT_OF_BAND_TABLE 12 /* Length of table in bytes */
- /* */
- /* Define the subprocess information table used when a subprocess */
- /* AST routine is called as it's own record. */
- /* */
- struct SMG$R_SUBPROCESS_INFO_TABLE {
- unsigned long int SMG$L_DISP_ID; /* Display ID */
- unsigned long int SMG$L_USR_ARG; /* User's AST argument */
- unsigned long int SMG$L_STATUS; /* Status of executed command */
- } ;
- #define SMG$C_SUBPROCESS_INFO_TABLE 12 /* Length of table in bytes */
- /* */
- /* Define an information table that can be used by both */
- /* SMG$GET_PASTEBOARD_ATTRIBUTES and SMG$GET_KEYBOARD_ATTRIBUTES */
- /* as it's own record. */
- /* */
- struct SMG$R_ATTRIBUTE_INFO_BLOCK {
- unsigned long int SMG$L_DEV_CHAR; /* Device characteristics */
- unsigned long int SMG$L_DEV_DEPEND; /* Specific characteristics (1) */
- unsigned long int SMG$L_DEV_DEPEND2; /* Specific characteristics (2) */
- unsigned char SMG$B_DEV_CLASS; /* Device class (e.g. DC$_TERM) */
- union {
- unsigned char SMG$B_PBD_TYPE; /* Internal SMG device type */
- unsigned char SMG$B_RECALL_NUM; /* Size of recall buffer (+) */
- } SMG$R_DEV_OVERLAY;
- unsigned char SMG$B_DEV_TYPE; /* Physical device type (e.g. DT$_VT100) */
- union {
- unsigned char SMG$B_NUM_ROWS; /* Number of rows on device */
- unsigned char SMG$B_TYPEAHD_CHAR; /* First char in typeahead buffer (+) */
- } SMG$R_ROW_OVERLAY;
- unsigned short int SMG$W_NUM_COLUMNS; /* Terminal width */
- union {
- unsigned short int SMG$W_TYPEAHD_CNT; /* Number of chars in typeahead buffer (+) */
- struct {
- unsigned char SMG$B_PBD_COLOR; /* PBD background color */
- unsigned char SMG$B_DEV_PARITY; /* Parity attributes (+) */
- } SMG$R_COUNT_STRUCT;
- } SMG$R_COUNT_OVERLAY;
- unsigned short int SMG$W_DEV_SPEED; /* Terminal Speed (+) */
- unsigned short int SMG$W_DEV_FILL; /* Fill characteristics (+) */
- unsigned short int SMG$W_PHYS_CURSOR_ROW; /* Row where physical cursor is */
- unsigned short int SMG$W_PHYS_CURSOR_COL; /* Col where physical cursor is */
- unsigned long int SMG$L_DISPLAY_ID; /* Display containing phy cursor */
- } ;
- #define SMG$C_ATTRIBUTE_INFO_BLOCK 32 /* Length of table in bytes */
- #endif
-